<?php
/**
 * Page css.php où arrivent toutes les requêtes CSS
 * Cette page vérifie les paramètres pour apeller :
 *  - le fichier de cache
 *  - le bon fichier de css
 * @author Mickaël CASTANHEIRO
 * @version 2.0.1
 */
/*
 * Style d'encodage pour l'affichage
 */
header('Content-type: text/css; charset=utf-8');

/*
 * Realpath
 */
define('__PATH__', realpath('.'));
define('APPLICATION_ENV', 'dev');

/*
 * Contrôleur requis
 */
require 'lib/cass/Data.class.php';
use \cass\Data;
// Si le css demandé est correct
if (preg_match('!/' . Data::directories('relative_uri') . '(?P<composites>[,-_\w]+)(?:\.php.css)!', $_SERVER['REQUEST_URI'], $matches)) {
    $cacheFile = __PATH__ . Data::directories('cache') . 'css/' . $matches['composites'] . Data::extensions('cache');

    // Fichier de cache
    if (!file_exists($cacheFile) OR (APPLICATION_ENV == 'dev') ) {

        ob_start();
        $matches = explode(',', str_replace('__', '/', $matches['composites']));
        $matches = array_merge(array('cass', 'cass-conf', 'cass-icons', 'cass-form'), $matches);
        foreach ($matches AS $css) {
            $cssFile = __PATH__ . Data::directories('web') . 'css/' . $css . Data::extensions('css');
            if (file_exists($cssFile)) {
                require $cssFile;
            }
        }

        $content = ob_get_contents();
        ob_end_clean();

        // Optimisation
        $content = preg_replace('![\n\r]!', '', $content);
        $content = preg_replace('!\/\*(.*)\*\/!iUs', '', $content);
        $content = str_replace('    ', '', $content);
        $content = str_replace(', ', ',', $content);
        $content = str_replace(';}', '}', $content);
        $content = str_replace(': ', ':', $content);

        // En cache
        file_put_contents($cacheFile, $content);
    }
    require $cacheFile;
}
